package com.nancy.java_design.template.demo1;

/**
 * 模板方法模式
 * 定义一个操作中的算法骨架，而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤
 * 模板方法模式是一种代码复用技术，它就是将逻辑实现放在抽象父类中，而把具体的逻辑实现放到子类中
 * 以炒菜为例：
 * 1.洗菜
 * 2.切菜
 * 3.炒菜：
 * a.爆炒
 * b.清炒
 * 4.盛菜
 */
public abstract class Vegetable {
    //炒菜
    public final void cookVegetable() {
        wash();
        cut();
        cook();
        serve();
    }

    //1.洗菜
    public void wash() {
        System.out.println("洗菜");
    }

    //2.切菜
    public void cut() {
        System.out.println("切菜");
    }

    //3.炒菜
    public abstract void cook();

    //4.盛菜
    public void serve() {
        System.out.println("盛菜");
    }
}
